<?php 

class ScheduleEventManager
{

	private $_db;
	
	public function __construct(PDO $db)
	{
		$this->setDb($db);
	}
	
	public function setDb($db)
	{
		$this->_db = $db;
	}
	
	
	public function setResult(Sport $sport, ScheduleEvent $scheduleEvent)
	{
		//1ère étape : on met à jour le scheduleEvent
		//On teste le sport concerné
		switch($sport->id())
		{
			case 1: //Si c'est un concours sur du basket : on met à jour le scheduleEvent dans la table scheduleEvent_basket
				$reqUpdate = $this->_db->prepare("UPDATE scheduleEvent_basket SET homeScore= :homeScore, awayScore= :awayScore, winningTeam= :winningTeam, pointsDifference= :pointsDifference, pointsTotal= :pointsTotal, overtime= :overtime WHERE id= :id");
				$reqUpdate->bindValue(":homeScore", $scheduleEvent->homeScore(), PDO::PARAM_INT);
				$reqUpdate->bindValue(":awayScore", $scheduleEvent->awayScore(), PDO::PARAM_INT);
				$reqUpdate->bindValue(":winningTeam", $scheduleEvent->winningTeam(), PDO::PARAM_INT);
				$reqUpdate->bindValue(":pointsDifference", $scheduleEvent->pointsDifference(), PDO::PARAM_INT);
				$reqUpdate->bindValue(":pointsTotal", $scheduleEvent->pointsTotal(), PDO::PARAM_INT);
				$reqUpdate->bindValue(":overtime", $scheduleEvent->overtime(), PDO::PARAM_BOOL);
				break;
			default: //Si c'est une classe qui n'est pas "connue" : on ne fait rien
				return;
		}
		$reqUpdate->bindValue(":id", $scheduleEvent->id(), PDO::PARAM_INT);
		$reqUpdate->execute();
		//2ème étape : on va rechercher tous les bets associés à ce scheduleEvent
		$betsManager = new BetsManager($this->_db);
		$listBets = $betsManager->get($sport, null, $scheduleEvent);
		//3ème étape : pour chaque bets, on va chercher le contest associé et ses règles et on met à jour le bet avec les calculs des points pour chaque prono inclus dans le bet
		$contestManager = new ContestManager($this->_db);
		$rulesContestManager = new RulesContestManager($this->_db);
		foreach($listBets as $bet)
		{
			$betsManager->setResult($sport, $bet, $scheduleEvent);
		}
	}
	
	public function get($search, Sport $sport)
	{
		//Fonction qui va chercher un scheduleEvent dans la table scheduleevents appropriée à partir du critère de recherche search et du sport
		switch($sport->id())
		{
			case 1://C'est du basket
				$reqSelect = $this->_db->prepare("SELECT * FROM scheduleevent_basket WHERE id= :id");
				break;
			default:
				return null;
		}
		$reqSelect->bindValue(":id", $search);
		$reqSelect->execute();
		$scheduleEvent = $reqSelect->fetch(PDO::FETCH_ASSOC);
		if(is_array($scheduleEvent))
		{
			switch($sport->id())
			{
				case 1://C'est du basket
					return new ScheduleEventBasket($scheduleEvent);
				default:
					return null;
			}
		}
		return null;
	}
	
}